public class Leetcode {
}

//leetcode:409:最长回文串
class Solution {
    public int longestPalindrome(String s) {
        int n = s.length();
        int[] arr = new int[127];
        //记录每个字符的个数
        for(int i = 0; i < n;i++){
            arr[s.charAt(i)]++;
        }
        int ret = 0;
        for(int x : arr){
            //如果此时字符的个数是奇数，那么拼接成的字符串为回文串长度就为它的一半乘于2
            //而如果为偶数，同样如此
            ret+= x / 2 * 2;
        }
        //如果最后得到的长度是小于原字符串的长度，那么我们就还可以在这个回文串的中间添加一个任意字符，形成一个新的回文串，此时的长度就是最大的
        return ret < n ? ret+1 : ret;
    }
}

//leetcode:942:增减字符串匹配
class Solution2 {
    public int[] diStringMatch(String s) {
        int n = s.length();
        int left = 0, right = n;
        int[] arr = new int[n+1];
        for(int i = 0; i < n; i++){
            if(s.charAt(i) == 'I'){
                //如果为I就存入此时left的值
                arr[i] = left++;
            }else{
                //如果为D就存入此时right的值
                arr[i] = right--;
            }
        }
        //确保最后一个位置的存入
        arr[n] = left;
        return arr;
    }
}